package cn.devzyh.oms.wsms.service;

import cn.devzyh.oms.common.core.util.R;
import cn.devzyh.oms.wsms.api.dto.StockDTO;
import cn.devzyh.oms.wsms.api.entity.Stock;
import cn.devzyh.oms.wsms.api.vo.StockVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 库存记录
 *
 * @author devzyh
 * @date 2023-10-29
 */
public interface StockService extends IService<Stock> {

	/**
	 * 自定义分页查询
	 *
	 * @param page  分页参数：为空时不使用分页
	 * @param stock 请求参数
	 * @return
	 */
	List<StockVO> list(IPage<Stock> page, Stock stock);

	/**
	 * 库存调整
	 *
	 * @param dto 库存操作数据
	 * @return
	 */
	R adjust(StockDTO dto);

	/**
	 * 批量调整
	 *
	 * @param list     库存操作列表
	 * @param rollback 是否支持回滚
	 * @return
	 */
	R batchAdjust(List<StockDTO> list, boolean rollback);

	/**
	 * 在途库存
	 *
	 * @param dto 库存操作数据
	 * @return
	 */
	R inTransit(StockDTO dto);

	/**
	 * 库存入库
	 *
	 * @param dto 库存操作数据
	 * @return
	 */
	R inbound(StockDTO dto);

	/**
	 * 分配库存
	 *
	 * @param dto 库存操作数据
	 * @return
	 */
	R allocate(StockDTO dto);

	/**
	 * 库存出库
	 *
	 * @param dto 库存操作数据
	 * @return
	 */
	R outbound(StockDTO dto);

}